<?php

//实例化表格，参数 int ： 最大行数
$table = new swoole_table(1024);
//设置表格字段  参数 （字段名：string ， 字段类型：int、float、string ， 长度：int）
$table->column('id',$table::TYPE_INT,4);
$table->column('name',$table::TYPE_STRING,64);
$table->column('price',$table::TYPE_INT,11);
//创建表格
$table->create();


$server = new swoole_websocket_server("0.0.0.0", 9501);
$server->table = $table;

$server->on('open', function($server, $req) {
	echo 'open beging';
    echo "SWOOLE ".SWOOLE_VERSION . " 服务已启动".PHP_EOL;
    //var_dump($req);
    //var_dump($req->get['token']);
    $token = $req->get['token'];
    $fd = $req->fd;
    //todo $fd 和 $token 建立关系
    //echo 't:'.$token;
    //echo 'fd:'.$fd;
   
    //添加数据  两种方式
    //
    $server->table->set('iphoneX',['id'=>1,'name'=>'iphoneX','price'=>9999]);
    //用 this->table 报错?
    //$this->table['xiaomi'] = ['id'=>2,'name'=>"小米",'price'=>3339];

    // foreach ($table as $key => $value) {
    //     var_dump($value);
    //     echo PHP_EOL ;
    // }
    // //单独设置某字段自增 参数（'表名'，’字段名‘，’步长‘）
    // $table->incr('iphoneX','price',1000);
    // var_dump($table->get('iphoneX'));
    // //单独设置字段自减
    // $table->decr('xiaomi','price',1000);
    // var_dump($table->get('xiaomi'));
    // //删除某条数据
    // $table->del('xiaomi');
    // //判断数据是否存在
    // if(!$table->exist('xiaomi')){
    //     echo '不存在此字段';
    // }

    echo 'open end';

});

$server->on('message', function($server, $frame) {
    $table = $server->table;
    echo "received message: {$frame->data}\n";
    //more
    foreach ($server->connections as $fd) {
        //所有连接的
        $server->push($fd, "g-ok"); 
    }
    //$server->push($frame->fd, json_encode(["hello", "world"]));
    //当前的
    $server->push($frame->fd, "s-ok");



    if(!$table->exist('iphoneX')){
        echo '不存在此字段';
    }else{
        echo '存在';
    }

    //好多业务放这。todo1
    //广播move user move
    //广播active user 转头，跳
    //广播碰撞结果 1->2 then 2计数 达到3次 2 消失 1得分
    
    //协议分装string 还是json
    $data = json_decode($frame->data);
    var_dump($data);
    echo("消息是：".$data->message);
    //todo 
    //if
    $buzData = $data->buzData;
    var_dump($buzData);
    echo("业务实体name".$buzData->key1);

    //动作分析
    //是不是这样 update中有 基础动作例如 点击按钮
    //
    //刚想到先弄个简单的。例如更新一朵白云地址
    //
    //通过一个http控制器移动白云
    //
    //update.移动starthero已经有了
    //移动plane的有。 annemy plane 也有
    //
    //
    //single screen1  screen2 没有联网的情况下显示白云
    //multiple 
    //的情况下 白云属于预设从左飘到右边（net控制）
    //问题1.如果是 single下。是缓动过去的。（hero好理解，敌机好理解。星星不好理解《是跳跃的》）
    //
    //问题2.网络能使白云缓动吗
    //
    //
    //好不容易百度一个资料
    //
    //action event 例如click.sprint 是否有click.如果有
    //放哪个生命周期里


});

$server->on('close', function($server, $fd) {
    //echo 'fd:'.$fd;
    //todo 根据fd 删除对应关系
    echo "connection close: {$fd}\n";
});

$server->start();

///update (dt) {}